part of '../widgets.dart';

/// 只用于Column、Row中，用于控制间距
/// 因为每次都要使用Expanded包含SizedBox，既麻烦，又不直观，所以用Space来代替
///
class Space extends StatelessWidget {
  final int? flex;
  final double? width;
  final double? height;
  final Widget? child;
  const Space({
    /// Row或Column都可以使用
    this.flex,

    /// 在Row中使用
    this.width,

    /// 在Column中使用
    this.height,
    this.child,
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    // 3个参数只能传入1个
    if (width != null) {
      assert(flex == null && height == null);
    } else if (height != null) {
      assert(flex == null && width == null);
    } else if (flex != null) {
      assert(height == null && width == null);
    }

    if (width != null || height != null) {
      // 当width或height不为空时，返回的是SizedBox
      return SizedBox(
        width: width,
        height: height,
        child: child,
      );
    } else {
      // 如果都为空，则返回Expanded的版本
      return Expanded(
        flex: flex ?? 1,
        child: SizedBox(
          child: child,
        ),
      );
    }
  }
}
